package indi.leetcode;

import java.util.Deque;
import java.util.LinkedList;

/**
 * 用队列实现栈
 */
public class Q_225 {
    /**
     * Your MyStack object will be instantiated and called as such:
     * MyStack obj = new MyStack();
     * obj.push(x);
     * int param_2 = obj.pop();
     * int param_3 = obj.top();
     * boolean param_4 = obj.empty();
     */
    class MyStack {

        private Deque<Integer> deque;

        /**
         * Initialize your data structure here.
         */
        public MyStack() {
            deque = new LinkedList<>();
        }

        /**
         * Push element x onto stack.
         */
        public void push(int x) {
            deque.offer(x);
            for (int i = 0; i < deque.size() - 1; i++) {
                deque.offer(deque.remove());
            }
        }


        /**
         * Removes the element on top of the stack and returns that element.
         */
        public int pop() {
            return deque.remove();
        }

        /**
         * Get the top element.
         */
        public int top() {
            return deque.poll();
        }

        /**
         * Returns whether the stack is empty.
         */
        public boolean empty() {
            return deque.size() == 0;
        }

    }
}
